package com.yhb.dao;

import com.yhb.model.User;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface UserMapper {
    User login(@Param("mobile") String username, @Param("password") String pwd);
    User getUserById(@Param("id")String id);
    User getUserByMobile(@Param("mobile")String mobile);
    int addUser(@Param("user")User user);

    int modifyUser(@Param("user") User user);

    List<String> getRootUsers();
    List<String> allUserIds();
    List<User> allUser();
    List<User> searchUser(@Param("key")String key);

    User getInvitor(@Param("userId")String userId);
    String getInvitorId(@Param("userId")String userId);

    /**
     * 获取 userId 邀请的所有人的id
     */
    List<String> getInviteeIds(@Param("userId")String userID);

    /**
     * 获取 userId 邀请的所有人
     */
    List<User> getInvitees(@Param("userId")String userId);

    /**
     * 某个时间点后激活Vip的粉丝数
     * @param userId 邀请人的 id
     * @param timePoint 时间点
     */
    Long getInviteeCountRegisterTimeAfter(@Param("userId")String userId, @Param("date")Date timePoint);

    int updateUserActiveTime(@Param("userId") String userId);

    Long isActiveUserInTimeRange(@Param("userId") String userId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
    Long activeUserCountInTimeRange(@Param("startTime") Date startTime, @Param("endTime") Date endTime);

    Long getVipStartInRangeCount(@Param("userIds") List<String> userIds, @Param("startTime") Date startTime, @Param("endTime") Date endTime);


}
